import request from '@/utils/request'

// 查询调整课程记录表列表
export function listCourseAdjustmentRecord(query) {
  return request({
    url: '/trainingManagement/CourseAdjustmentRecord/list',
    method: 'get',
    params: query
  })
}

// 查询调整课程记录表详细
export function getCourseAdjustmentRecord(id) {
  return request({
    url: '/trainingManagement/CourseAdjustmentRecord/' + id,
    method: 'get'
  })
}

// 新增调整课程记录表
export function addCourseAdjustmentRecord(data) {
  return request({
    url: '/trainingManagement/CourseAdjustmentRecord',
    method: 'post',
    data: data
  })
}

// 修改调整课程记录表
export function updateCourseAdjustmentRecord(data) {
  return request({
    url: '/trainingManagement/CourseAdjustmentRecord',
    method: 'put',
    data: data
  })
}

// 删除调整课程记录表
export function delCourseAdjustmentRecord(id) {
  return request({
    url: '/trainingManagement/CourseAdjustmentRecord/' + id,
    method: 'delete'
  })
}

/**
 * 提交课程调整记录
 * @param {Object} params - 请求参数
 * @param {Object} params.adjustmentRecord - 课程调整记录对象
 * @param {Object} [params.scheduleDetails] - 课程详情对象（调整范围为1时必填）
 * @returns {Promise} - 请求Promise对象
 */
export const insertAdjustmentRecord = (params) => {
  return request({
    url: '/trainingManagement/CourseAdjustmentRecord/insertAdjustmentRecord',
    method: 'post',
    data: {
      adjustmentRecord: params.adjustmentRecord, // 课程调整记录主体
      scheduleDetails: params.scheduleDetails || null // 可选的课程详情（更新用）
    }
  })
      .then(response => {
        console.log('接口原始响应:', response);

        // 更宽松的成功判断逻辑
        if (response && (response.code === 200 || response.success === true)) {
          // 返回完整响应，让调用方处理
          return Promise.resolve(response);
        } else {
          // 后端返回业务错误
          const errorMsg = response?.msg || response?.message || '提交课程调整记录失败';
          console.error('业务逻辑错误:', errorMsg);
          return Promise.reject(new Error(errorMsg));
        }
      })
      .catch(error => {
        // 处理网络错误或其他异常
        console.error('请求异常:', error);

        // 如果是响应错误，尝试从错误响应中提取信息
        if (error.response && error.response.data) {
          const errorData = error.response.data;
          const errorMsg = errorData.msg || errorData.message || '服务器返回错误';
          return Promise.reject(new Error(errorMsg));
        }

        // 网络错误或其他异常
        return Promise.reject(new Error(error.message || '网络异常，请稍后重试'));
      });
};

/**
 * 通过原教师ID查询所有对应的调整记录
 * @param {String} teacherId - 原教师ID
 * @returns {Promise} - 包含查询结果的Promise对象
 */
export function getAdjustmentRecordsByOriginalTeacher(teacherId) {
  return request({
    url: `/trainingManagement/CourseAdjustmentRecord/byOriginalTeacher/${teacherId}`,
    method: 'get'
  })
      .then(response => {
        // 统一处理成功响应
        if (response.code === 200) {
          return Promise.resolve(response.data)
        } else {
          console.error('查询失败:', response.msg)
          return Promise.reject(new Error(response.msg || '查询教师调整记录失败'))
        }
      })
      .catch(error => {
        // 处理网络错误或其他异常
        console.error('请求异常:', error)
        return Promise.reject(new Error('网络异常，请稍后重试'))
      })
}